<?php

/**
 * @version		1.0.0 gerenciador_de_arquivos $
 * @package		gerenciador_de_arquivos
 * @copyright	Copyright © 2012 - All rights reserved.
 * @license		GNU/GPL
 * @author		Edio Hanoway Kepke
 * @author mail	hanoway12@gmail.com
 */
require_once(dirname(__FILE__).DS.'arquivoautor.php');

class ArquivoAutorDAO 
{
    private static $arquivoAutorDAO;

    private $db;
    
    private $table = "mod_file_arquivo_autor";

    private function __construct() { }
    
    
    
    /**
    *  Get a ArquivoAutorDAO object.
    *
    * Retorna uma istancia de Arquivo DAO.
    *
    * @return  ArquivoAutorDAO object
    *
    * @see     ArquivoAutorDAO
    * @since   1.0
    */
    public static function instance()
    {
        if(is_null(self::$arquivoAutorDAO))
        {
            self::$arquivoAutorDAO = new ArquivoAutorDAO();                       
       }                
       
       return self::$arquivoAutorDAO;
    }
    
    public function setDb($db) { $this->db = $db; }
    
    public function insert($idArquivo, $idAutor)
    {                
        $arquivoAutorOBJ = new ArquivoAutor($idArquivo, $idAutor);
        
        try 
        {
            return $this->db->insertObject($this->table, $arquivoAutorOBJ);                                               
        } 
        catch (Exception $exc) 
        {
            return false;
        }       
    }
    
    public function deleteForIdFileIdAutor($idFile, $idAutor)
    {
        $idFile = (int)$idFile;
        $idAutor = (int)$idAutor;
        
        if(!is_int($idFile) || $idFile == 0 || !is_int($idAutor) || $idAutor == 0)
        {
            return false;
        }        
        
        $query = $this->db->getQuery(true);       
                              
        $query->delete("mod_file_arquivo_autor");
        $query->where("id_arquivo = ".$query->quote($idFile));
        $query->where("id_autor = ".$query->quote($idAutor));                                                    
        $this->db->setQuery($query);
                
        return $this->db->execute();                
    }
            
    public function selectObject($idArquivo, $idAutor)
    {        
        //$this->db = JFactory::getDbo();
        $query = $this->db->getQuery(true);
        $query->select('*')->from("mod_file_arquivo_autor");                        
        $query->where("id_arquivo = ".$query->quote(trim($idArquivo)));
        $query->where("id_autor = ".$query->quote(trim($idAutor)));
        $this->db->setQuery($query);        
        return $this->db->loadObject();
    }
    
    public function select($arquivoAutor)
    {
                
    }  
    
     public function selectAutoresArquivo($id)
    {
        $query = $this->db->getQuery(true);                
        $query->select('autor.id, autor.nome');                                                                                
        $query->from("mod_file_arquivo_autor as arquivo_autor");
        $query->innerJoin("
                            mod_file_autor as autor
                            on
                            arquivo_autor.id_autor = autor.id
                          ");
      
        $query->where("arquivo_autor.id_arquivo = ".$query->quote($id));
                                
        $this->db->setQuery($query);
                                     
        return $this->db->loadAssocList();   
                
    }
    
    
    public function deleteForIdFile($idFile)
    {
        $idFile = (int)$idFile;
        
        if(!is_int($idFile) || $idFile == 0)
        {
            return false;
        }
        
        
        $query = $this->db->getQuery(true);       
                              
        $query->delete("mod_file_arquivo_autor")->where("id_arquivo = ".$query->quote($idFile));
                                                           
        $this->db->setQuery($query);                                
        
        $del = $this->db->execute();
        
//        echo Fum::printToDebug($this->db->getErrorMsg());
        
        return $del;
    }
}

?>
